Alpine Linux 中存在代码执行漏洞 影响 Docker 等容器
翻译:360代码卫士团队
通常和 Docker 一起使用的 Alpine Linux 发行版中被曝多个漏洞,其中一个漏洞可导致任意代码执行。
Alpine Linux 版本基于 musl 和BusyBox,它的体量小且多用于容器中如 Docker,以提供快速启动服务。APK 是 Alpine 中的默认数据包管理器,受多个 bug 影响。发现这些 bug 的安全研究员 Max Justicz 表示,其中最严重的 bug 网络中间人在用户机器上执行任意代码。Justicz 表示,当使用默认仓库时,数据包并非通过 TLS 提供服务,因此这种情况非常糟糕。攻击者可针对基于 Alpine 基础上的 Docker 容器执行代码,研究人员发布视频详细说明了这类攻击。
Justicz 指出,由于数据包管理器在检查哈希之前提取数据包(被压缩为 tar 文件以 apk 形式传播)。如果所下载的数据包哈希不匹配,那么 APK 就尝试把所有提取的文件和目录链接断开。
该 APK 的“提交勾子”功能导致攻击者将永久性任意文件写入代码执行,条件是文件存活过清理进程。因此,这些文件在 apk 推出之前会得以执行。为此,攻击者需要在清理进程中控制所下载的 tar 文件并确保 APK 无法解开 payload 连接及其目录。下一步是让 APK 进程成功退出,而这要求返回退出代码 0。在通常情况下,它“将返回未能安装的数据包数量的退出代码数字,而这个数量是一个。”然而,这个值可溢出,而且判断出错次数 % 256 == 0,该进程返回退出代码 0,也就是说攻击成功实施。研究人员还能将 shellcode 写入 exit(0) 直接写入内存并执行。
研究人员指出,这个 bug 可能影响所有在生产环境中使用 Alpine Linux 的人群。应该重构所有 Alpine 衍生容器以清除这个错误。Alpine Linux 很可能用于数百家组织机构中,这些机构很可能已受影响。
Justicz 总结称,“某些组织机构几乎都设置了漏洞奖励计划,对于开发人员写出类似 bug 提供大额奖金。如果漏洞奖励计划的目的是帮助加固组织机构的安全,那么依赖关系中出现的严重漏洞问题在某种程度上难道不应该符合要求得到奖赏吗?”
推荐阅读
密币挖掘恶意软件已成功通过 Docker 和 Kubernetes 转向云
原文链接
https://www.securityweek.com/code-execution-alpine-linux-impacts-containers
本文由360代码卫士编译,不代表360观点,转载请注明 “转自360代码卫士www.codesafe.cn”。